﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using daBase.Objects.AnalysisErrors;

namespace daStaticAnalyser.Analysers
{
    [Serializable()]
    public class AnalyserRegularExpression
    {
        private string name, regex, hint;
        private bool iscorrect;
        private Importance level;

        public AnalyserRegularExpression(string Name, string RegEx, bool IsCorrect, int Level, string Hint)
        {
            name = Name;
            regex = RegEx;
            iscorrect = IsCorrect;
            level = new Importance(Level);
            hint = Hint;
        }

        public AnalyserRegularExpression()
        {
            name = "Новое регулярное выражение";
            regex = string.Empty;
            iscorrect = false;
            level = new Importance(10);
            hint = "Обратитесь к разработчику.";
        }

        [Category("Шаблон")]
        [DisplayName("Сообщение")]
        [Description("Сообщение, которое будет выводиться при обнаружении соответствия.")]
        public string Name { get { return name; } set { name = value; } }

        [Category("Шаблон")]
        [DisplayName("Корректно")]
        [Description("Если данная опция включена, то правило будет срабатывать при отсутствии конструкции в коде, в противном случае - при наличии.")]
        public bool IsCorrect { get { return iscorrect; } set { iscorrect = value; } }

        [Category("Шаблон")]
        [DisplayName("Уровень")]
        [Description("Уровень важности правила.")]
        public int Level { get { return level.Value; } set { level.Value = value; } }

        [Category("Шаблон")]
        [DisplayName("Выражение")]
        [Description("Регулярное выражение, на соответствие которому будет проверяться исходный код.")]
        public string RegEx { get { return regex; } set { regex = value; } }

        [Category("Шаблон")]
        [DisplayName("Подсказка")]
        [Description("Подсказка по устранению ошибки.")]
        public string Hint { get { return hint; } set { hint = value; } }
    }
}
